package com.itheima.exception_demo.trycatch_demo;

import java.io.ObjectStreamException;
import java.util.ArrayList;

/*
    多异常捕获处理方案

    1 多个异常，每个异常单独处理
          try{
              异常1
          }catch(异常1){

          }
          try{
              异常2
          }catch(异常2){

          }

    2 多个异常，一次捕获，多次处理

      try{
          异常1
          异常2
      }catch(异常1){
      }catch(异常2){
      }

    3 多个异常，异常一次捕获，一次处理
      try{
          异常1
          异常2
      }catch(Exception e){
      }
 */
public class Exception_TryCatch2 {
    public static void main(String[] args) {
        // 1 多个异常，每个异常单独处理
        int[] arr = {1, 2, 3};

        try {
            System.out.println(arr[10]);
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("索引越界处理的方案!");
        }

        try {
            arr = null;
            System.out.println(arr[1]);
        }catch(NullPointerException e){
            System.out.println("空指针处理的方案!");
        }

        System.out.println("==========================");

        // 2 多个异常，一次捕获，多次处理
        try {
            String s = "";
            System.out.println(s.length());

            System.out.println(3 / 0);
        }catch (NullPointerException e){
            System.out.println("空指针处理方案!");
        }catch (ArithmeticException e){
            System.out.println("算数异常处理方案!");
        }

        System.out.println("==========================");

        // 3 多个异常，异常一次捕获，一次处理
        try {
            Object s = "abc";
            Integer num = (Integer) s;// 类型转换异常

            ArrayList<Integer> list = new ArrayList<>();
            list.add(1);
            for (Integer integer : list) {// 并发修改异常
                list.add(2);
            }
        }catch(Exception e){
            System.out.println("统一处理异常的方案!");
        }

    }
}
